package com.aiwiown.face.response;

import com.aiwiown.face.ApiResponse;
import com.aiwiown.face.domain.lite.BizInfo;
import com.aiwiown.face.domain.lite.IdCardInfo;
import com.aiwiown.face.domain.lite.LivenessResult;
import com.aiwiown.face.domain.lite.VerifyResult;
import com.aiwiown.face.domain.verify.Images;
import com.aiwiown.face.internal.mapping.ApiField;

/**
 * <pre>
 * </pre>
 * LiteResultResponse
 * Date: 2020/4/23 0023
 * Time: 15:37
 *
 * @author tang.xiaosheng@qq.com
 */
public class LiteResultResponse extends ApiResponse {
    private static final long serialVersionUID = 1531728267181348973L;

    /**
     * 表示目前 FaceID Lite 的使用状态：
     * <p>
     * NOT_STARTED：get_token 之后，并没有调用过 do 方法，还没有开始验证；
     * PROCESSING：正在进行 FaceID Lite 验证；
     * OK：完成了 FaceID Lite 验证（OK并不表示通过了验证，是流程正常结束）；
     * FAILED：验证流程未完成或出现异常；
     * CANCELLED：用户主动取消了验证流程；
     * TIMEOUT：流程超时。
     * (当处于“NOT_STARTED”或者“PROCESSING”状态时，idcard_info / liveness_result /verify_result字段均不会返回。
     */
    @ApiField("status")
    private String status;

    /**
     * 包含：biz_id, biz_no, biz_extra_data
     * <p>
     * biz_id：业务流串号，可以用于反查比对结果；
     * biz_no：客户业务流水号，会在notify和return时原封不动的返回给客户；
     * biz_extra_data：在调用 notify_url 和 return_url 时会返回的额外数据，
     * 用户可以用此接口来传递一些额外信息。
     */
    @ApiField("biz_info")
    private BizInfo bizInfo;

    /**
     * 身份证识别的结果，此字段在 idcard_mode = 0 时不返回；如果用户中途中断了活体流程，则此字段也不返回。
     */
    @ApiField("idcard_info")
    private IdCardInfo idcardInfo;

    /**
     * 活体检测结果；如果用户中途中断了活体流程，则此字段不返回。
     */
    @ApiField("liveness_result")
    private LivenessResult livenessResult;
    /**
     * 人脸比对结果；如果用户中途中断了活体流程，则此字段不返回。
     */
    @ApiField("verify_result")
    private VerifyResult verifyResult;

    /**
     * 活体检测得到的图像，调用时通过 return_image 来选择，或以jpg编码并用base64字符串返回，或返回为null。
     * <p>
     * 只有当 status 返回字段为 "OK"  时，图像才会返回。
     * <p>
     * 注意：此字段仅在get_result接口调用时才会返回有图像信息，在notify_url和return_url不返回图片数据信息
     */
    @ApiField("images")
    private Images images;

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public BizInfo getBizInfo() {
        return bizInfo;
    }

    public void setBizInfo(BizInfo bizInfo) {
        this.bizInfo = bizInfo;
    }

    public IdCardInfo getIdcardInfo() {
        return idcardInfo;
    }

    public void setIdcardInfo(IdCardInfo idcardInfo) {
        this.idcardInfo = idcardInfo;
    }

    public LivenessResult getLivenessResult() {
        return livenessResult;
    }

    public void setLivenessResult(LivenessResult livenessResult) {
        this.livenessResult = livenessResult;
    }

    public VerifyResult getVerifyResult() {
        return verifyResult;
    }

    public void setVerifyResult(VerifyResult verifyResult) {
        this.verifyResult = verifyResult;
    }

    public Images getImages() {
        return images;
    }

    public void setImages(Images images) {
        this.images = images;
    }
}
